package com.ruyue.csinstall.model.quote;


import java.io.File;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * 应用程序元数据
 */
public interface AppMetadata {

    /**
     * 应用ID
     * @return
     */
    String getId();

    /**
     * 应用名称
     * @return
     */
    String getName();

    /**
     * 应用版本号
     * @return
     */
    String getVersion();

    /**
     * 应用映射关系
     * @return
     */
    String getContext();

    /**
     * 应用映射解析器
     * @return
     */
    String[] getResolverClasses();

    /**
     * 获取额外的应用配置属性
     * @return
     */
    Properties getProperties();

    /**
     * 获取应用程序目录
     * @return
     */
    File getAppDirectory();

    /**
     * 返回应用层类加载器
     * @return
     */
    AppClassLoader getClassLoader();

    /**
     * 返回应用中的 Servlet
     * @return
     */
    Set<String> getServletClasses();

    /**
     * 返回应用中德 Listener
     * @return
     */
    Set<String> getListenerClasses();

    /**
     * 根据 Listener 类型返回应用中的 Listener
     * @return
     */
    Set<String> getListenerClassesOfType(String listenerType);

    /**
     * 返回服务和Servlet映射关系
     * @return
     */
    Map<String, String> getServiceServletMapping();

    /**
     * 返回服务和 Servlet Method 映射关系
     * @return
     */
    Map<String, String> getServiceMethodMapping();

}
